<?
class form
{
	var $class_table			= 'form_table'; // Style của table
	var $class_form				= 'form'; // Style của form
	var $class_form_button		= 'form_button'; // Style của button control
	var $class_form_name		= 'form_name'; // Style của tên control
	var $class_form_control		= 'form_control'; // Style của control
	var $class_form_errorMsg	= 'form_errorMsg'; // Style của chuỗi text thông báo submit error
	var $class_form_text		= 'form_text'; // Style của chuỗi text bên cạnh control
	var $class_form_text_note	= 'form_text_note'; // Style của chuỗi text thông báo yêu cầu nhập dữ liệu
	var $class_form_require		= 'form_asterisk'; // Style của chuỗi text biểu thị dữ liệu bắt buộc nhập
	var $check_javascript		= ''; // Kiểm tra form với javascript
	var $ec						= '{-----}'; // Explode character
	var $tr_html				= '';
	
	// Create <table>
	function create_table($cellpadding = '3', $cellspacing = '3', $add_html = '')
	{
		echo $create_table = '<table class="' . $this->class_table . '" cellpadding="' . $cellpadding . '" cellspacing="' . $cellspacing . '" ' . $add_html . '>';
	}
	
	// Close </table>
	function close_table($close_table = '</table>')
	{
		echo $close_table;
	}
	
	// Create <form>
	function create_form($name, $action, $method = 'get', $enctype = 'multipart/form-data', $add_html = '')
	{
		echo $create_form = '<form class="' . $this->class_form . '" name="' . $name . '" action="' . $action . '" method="' . $method . '" enctype="' . $enctype . '" ' . $add_html . '>';
	}
	
	// Close </form>
	function close_form($close_form = '</form>')
	{
		echo $close_form;
	}
	
	// Generate control in table
	function create_control($name, $control)
	{
		if ($name != '')
		{
			$name = $name . ' :';
		}
		else
		{
			$name = '&nbsp;';
		}
		
		return '<tr' . $this->tr_html . '><td class="' . $this->class_form_name . '">' . $name . '</td><td class="' . $this->class_form_text . '">' . $control . '</td></tr>';
	}
	
	// Add file javascript
	function add_javascript($filepath, $java_code_add_on = '')
	{
		if ($filepath != '')
		{
			$src = 'src="' . $filepath . '"';
		}
		else
		{
			$src = '';
		}
		echo '<script type="text/javascript" ' . $src . '>' . $java_code_add_on . '</script>';
	}
	
	// Check data require
	function data_require($require, $title, $object = '')
	{
		if ($require != 0)
		{
			$control_name = '<font class="' . $this->class_form_require . '">* </font>' . $title;
			if ($object != '')
			{
				switch ($require)
				{
					case 1: $type = 'R'; break;
					case 2: $type = 'RisNum'; break; 
					case 3: $type = 'RisEmail'; break; 
					default: $type = 'R'; break;
				}
				$arrObject = explode($this->ec, $object);
				$count = count($arrObject);
				for ($i=0;$i<$count;$i++)
				{
					$this->check_javascript .= "'" . $arrObject[$i] . "','','" . $type . "',";
				}
			}
		}
		else
		{
			$control_name = $title;
		}
		
		return $control_name;
	}
	
	// Show error
	function errorMsg($errorMsg)
	{
		if ($errorMsg != '')
		{
			$control = '<font class="' . $this->class_form_errorMsg . '">' . $errorMsg . '</font>';
			return $this->create_control('', $control);
		}
	}
	
	//Replace " -> &quot; (chống phá ngoặc)
	function replaceQ($string)
	{
		$string = str_replace('\"', '"', $string);
		$string = str_replace("\'", "'", $string);
		$string = str_replace("\&quot;", "&quot;", $string);
		$string = str_replace("\\\\", "\\", $string);
		return str_replace('"', "&quot;", $string);
	}
	
	/**
	 * Create text note
	 *
	 * @param string $text_note Chuỗi text ghi chú ở đầu Form	(Exp: "Fields marked with an asterisk (<font class="form_asterisk">*</font>) are required.")
	 * @return string
	 */
	function text_note($text_note = 'Fields marked with an asterisk (<font class="form_asterisk">*</font>) are required.'){
		if ($text_note != '')
		{
			$control = '<font class="form_text_note">' . $text_note . '</font>';
			return $this->create_control('', $control);
		}
	}
	
	/**
	 * Create button control
	 *
	 * @param string $typeControl Loại button							(Exp: "submit|reset")
	 * @param string $id ID của control						(Exp: "submit_id|reset_id")
	 * @param string $name Tên của control						(Exp: "submit|reset")
	 * @param string $value Title của control					(Exp: "Click submit|Click Reset")
	 * @param string $title Title của control					(Exp: "Click submit|Click Reset")
	 * @param string $add_html Code HTML thêm vào					(Exp: "onClick=\"checkForm()\"|''")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function button($typeControl, $id, $name, $value, $title = '', $add_html = '', $add_text = '')
	{
		$arrTypeControl	= explode($this->ec, $typeControl);
		$arrID			= explode($this->ec, $id);
		$arrName		= explode($this->ec, $name);
		$arrValue		= explode($this->ec, $value);
		$arrTitle		= explode($this->ec, $title);
		$arrAdd_html	= explode($this->ec, $add_html);
		$control		= '';
		
		$count = count($arrID);
		for($i=0;$i<$count;$i++)
		{
			if ($arrTypeControl[$i] == 'submit' && $this->check_javascript != '')
			{
				$check_javascript = 'onClick="MM_validateForm(' . substr($this->check_javascript, 0, -1) . '); return document.MM_returnValue"';
			}
			else
			{
				$check_javascript = '';
			}
			$control .= '<input class="' . $this->class_form_button . '" type="' . $arrTypeControl[$i] . '" title="' . $arrTitle[$i] . '" id="' . $arrID[$i] . '" name="' . $arrName[$i] . '" value="' . $arrValue[$i] . '" ' . $arrAdd_html[$i] . ' ' . $check_javascript . '/>';
			if ($i < $count - 1)
			{
				$control .= ' ';
			}
		}
		$control .= $add_text;
		
		return $this->create_control('', $control);
	}
	
	/**
	 * Create checkbox control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Option")
	 * @param string $id ID của control						(Exp: "new_hot_id|new_latest_id")
	 * @param string $name Tên của control						(Exp: "new_hot|new_latest")
	 * @param string $value Giá trị của control				(Exp: "1|1")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "1|0")
	 * @param string $title Chuỗi text bên cạnh control		(Exp: "Tin nổi bật|Tin mới";)
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onClick=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function checkbox($titleControl, $id, $name, $value, $currentValue, $title = '', $require = '0', $add_html = '', $add_text = '')
	{
		$arrID				= explode($this->ec, $id);
		$arrName			= explode($this->ec, $name);
		$arrValue			= explode($this->ec, $value);
		$arrCurrentValue	= explode($this->ec, $currentValue);
		$arrTitle			= explode($this->ec, $title);
		$arrAdd_html		= explode($this->ec, $add_html);
		$control			= '';
		
		$count = count($arrID);
		for($i=0;$i<$count;$i++)
		{
			$checked = '';
			if ($arrValue[$i] == $arrCurrentValue[$i])
			{
				$checked = ' checked="checked"';
			}
			$control .= '<input type="checkbox" id="' . $arrID[$i] . '" name="' . $arrName[$i] . '" value="' . $arrValue[$i] . '"' . $checked . ' ' . $arrAdd_html[$i] . '/>';
			if ($arrTitle[$i] != '')
			{
				$control .= '<label for="' . $arrID[$i] . '">' . $arrTitle[$i] . '</label>';
			}
			if ($i < $count - 1)
			{
				$control .= ' &nbsp; ';
			}
		}
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl), $control);
	}
	
	/**
	 * Create radio control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Gender")
	 * @param string $id ID của control						(Exp: "male_id|female_id")
	 * @param string $name Tên của control						(Exp: "male|female")
	 * @param string $value Giá trị của control				(Exp: "0|1")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "0")
	 * @param string $title Chuỗi text bên cạnh control		(Exp: "Male|Female";)
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onClick=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function radio($titleControl, $id, $name, $value, $currentValue, $title = '', $require = '0', $add_html = '', $add_text = '')
	{
		$arrID			= explode($this->ec, $id);
		$arrValue		= explode($this->ec, $value);
		$arrTitle		= explode($this->ec, $title);
		$arrAdd_html	= explode($this->ec, $add_html);
		$control		= '';
		
		$count = count($arrID);
		for($i=0;$i<$count;$i++)
		{
			$checked = '';
			if ($arrValue[$i] == $currentValue)
			{
				$checked = ' checked="checked"';
			}
			$control .= '<input type="radio" id="' . $arrID[$i] . '" name="' . $name . '" value="' . $arrValue[$i] . '"' . $checked . ' ' . $arrAdd_html[$i] . '/>';
			if ($arrTitle[$i] != '')
			{
				$control .= '<label for="' . $arrID[$i] . '">' . $arrTitle[$i] . '</label>';
			}
			if ($i < $count - 1)
			{
				$control .= ' &nbsp; ';
			}
		}
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl), $control);
	}
	
	/**
	 * Create getFile control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Image")
	 * @param string $id ID của control						(Exp: "new_image_id")
	 * @param string $name Tên của control						(Exp: "new_image")
	 * @param string $title Title của control					(Exp: "Your avatar")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $size Chiều rộng của filebox			(Exp: "30" character)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onFocus=\"this.value=''\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function getFile($titleControl, $id, $name, $title = '', $require = '0', $size = '30', $add_html = '', $add_text = '')
	{
		$control = '<input class="' . $this->class_form_control . '" type="file" title="' . $title . '" id="' . $id . '" name="' . $name . '" size="' . $size . '" ' . $add_html . '/>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl), $control);
	}
	
	/**
	 * Create select control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "City")
	 * @param string $id ID của control						(Exp: "city_id")
	 * @param string $name Tên của control						(Exp: "city")
	 * @param string $array_option Mảng giá trị của control			(Exp: "$arrayCity = array("--[Select]--" => 0, "London" => 1, Manchester => 2,)")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "1")
	 * @param string $title Title của control					(Exp: "Select city")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của combobox			(Exp: "200" px)
	 * @param string $size Chiều cao của combobox			(Exp: "10" rows)
	 * @param string $multiple Chọn nhiều dữ liệu một lúc		(Exp: "1" -> multiple; "0" -> not multiple)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onChange=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function select($titleControl, $id, $name, $array_option, $currentValue, $title = '', $require = '0', $width = '', $size = '', $multiple = '0', $add_html = '', $add_text = '')
	{
		$select_multi = '';
		if ($multiple != 0)
		{
			$select_multi = 'multiple="multiple"';
		}
		$control = '<select class="' . $this->class_form_control . '" title="' . $title . '" id="' . $id . '" name="' . $name . '" style="width:' . $width . 'px" size="' . $size . '" ' . $select_multi . ' ' . $add_html . '>';
		if (is_array($array_option))
		{
			foreach ($array_option as $arrKey => $arrValue)
			{
				$selected = '';
				if ($multiple != 0)
				{
					if (strpos($currentValue, "[" . $arrKey . "]") !== false)
					{
						$selected = ' selected="selected"';
					}
				}
				else
				{
					if ($arrKey == $currentValue)
					{
						$selected = ' selected="selected"';
					}
				}
				$control .= '<option title="' . $this->replaceQ($arrValue) . '" value="' . $arrKey . '"' . $selected . '>' . $arrValue . '</option>';
			}
		}// End if(is_array($array_option))
		$control .= '</select>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create select_db control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "City")
	 * @param string $id ID của control						(Exp: "city_id")
	 * @param string $name Tên của control						(Exp: "city")
	 * @param string $db_query Class db_query						(Exp: "$db_select = new db_query(...)")
	 * @param string $value_field Tên trường cần lấy giá trị		(Exp: "cit_id")
	 * @param string $name_field Tên trường cần hiển thị			(Exp: "cit_name")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "1")
	 * @param string $title Title của control					(Exp: "Select city")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của combobox			(Exp: "200" px)
	 * @param string $size Chiều cao của combobox			(Exp: "10" rows)
	 * @param string $multiple Chọn nhiều dữ liệu một lúc		(Exp: "1" -> multiple; "0" -> not multiple)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onChange=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function select_db($titleControl, $id, $name, $db_query, $value_field, $name_field, $currentValue, $title = '', $require = '0', $width = '', $size = '', $multiple = '0', $add_html = '', $add_text = '')
	{
		$select_multi = '';
		if ($multiple != 0)
		{
			$select_multi = 'multiple="multiple"';
		}
		$control = '<select class="' . $this->class_form_control . '" title="' . $title . '" id="' . $id . '" name="' . $name . '" style="width:' . $width . 'px" size="' . $size . '" ' . $select_multi . ' ' . $add_html . '>';
		if ($title != '' && $multiple == 0)
		{
			$control.= '<option value="">- ' . $title . ' -</option>';
		}
		while ($row = mysql_fetch_array($db_query->result))
		{
			$selected = '';
			if ($multiple != 0)
			{
				if (strpos($currentValue, "[" . $row[$value_field] . "]") !== false)
				{
					$selected = ' selected="selected"';
				}
			}
			else
			{
				if ($currentValue == $row[$value_field])
				{
					$selected = ' selected="selected"';
				}
			}
			$control .= '<option title="' . $this->replaceQ($row[$name_field]) . '" value="' . $row[$value_field] . '"' . $selected . '>' . $row[$name_field] . '</option>';
		}
		$control .= '</select>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create select_db_2_level control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "City")
	 * @param string $id ID của control						(Exp: "city_id")
	 * @param string $name Tên của control						(Exp: "city")
	 * @param string $db_query Class db_query						(Exp: "$db_select = new db_query(...)")
	 * @param string $value_field_lv1 Tên trường giá trị optgroup		(Exp: "root_id")
	 * @param string $name_field_lv1 Tên trường hiển thị optgroup	(Exp: "root_name")
	 * @param string $value_field_lv2 Tên trường cần lấy giá trị		(Exp: "sub_id")
	 * @param string $name_field_lv2 Tên trường cần hiển thị			(Exp: "sub_name")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "1")
	 * @param string $title Title của control					(Exp: "Select city")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của combobox			(Exp: "200" px)
	 * @param string $size Chiều cao của combobox			(Exp: "10" rows)
	 * @param string $multiple Chọn nhiều dữ liệu một lúc		(Exp: "1" -> multiple; "0" -> not multiple)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onChange=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function select_db_2_level($titleControl, $id, $name, $db_query, $value_field_lv1, $name_field_lv1, $value_field_lv2, $name_field_lv2, $currentValue, $title = '', $require = '0', $width = '', $size = '', $multiple = '0', $add_html = '', $add_text = '')
	{
		$select_multi = '';
		if ($multiple != 0)
		{
			$select_multi = 'multiple="multiple"';
		}
		$control = '<select class="' . $this->class_form_control . '" title="' . $title . '" id="' . $id . '" name="' . $name . '" style="width:' . $width . 'px" size="' . $size . '" ' . $select_multi . ' ' . $add_html . '>';
		if ($title != '' && $multiple == 0)
		{
			$control.= '<option value="">- ' . $title . ' -</option>';
		}
		$root_id = 0;
		while ($row = mysql_fetch_array($db_query->result))
		{
			if ($root_id != $row[$value_field_lv1])
			{
				$root_id = $row[$value_field_lv1];
				$control .= '<optgroup label="' . $this->replaceQ($row["root_name"]) . '"></optgroup>';
			}
			$selected = '';
			if ($multiple != 0)
			{
				if (strpos($currentValue, "[" . $row[$value_field_lv2] . "]") !== false)
				{
					$selected = ' selected="selected"';
				}
			}
			else
			{
				if ($currentValue == $row[$value_field_lv2])
				{
					$selected = ' selected="selected"';
				}
			}
			$control .= '<option title="' . $this->replaceQ($row[$name_field_lv2]) . '" value="' . $row[$value_field_lv2] . '"' . $selected . '>&nbsp; |-- ' . $row[$name_field_lv2] . '</option>';
		}
		$control .= '</select>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create select_db_multi control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Category")
	 * @param string $id ID của control						(Exp: "pro_category")
	 * @param string $name Tên của control						(Exp: "pro_category")
	 * @param string $array_multi Array chứa dữ liệu					(Exp: "$listAll")
	 * @param string $value_field Tên trường cần lấy giá trị		(Exp: "cat_id")
	 * @param string $name_field Tên trường cần hiển thị			(Exp: "cat_name")
	 * @param string $currentValue Giá trị hiện tại của control	(Exp: "1")
	 * @param string $title Title của control					(Exp: "Select city")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của combobox			(Exp: "200" px)
	 * @param string $size Chiều cao của combobox			(Exp: "10" rows)
	 * @param string $multiple Chọn nhiều dữ liệu một lúc		(Exp: "1" -> multiple; "0" -> not multiple)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onChange=\"alert('Hello world !')\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function select_db_multi($titleControl, $id, $name, $array_multi, $value_field, $name_field, $currentValue, $title = '', $require = '0', $width = '', $size = '', $multiple = '0', $add_html = '', $add_text = '')
	{
		$select_multi = '';
		if ($multiple != 0)
		{
			$select_multi = 'multiple="multiple"';
		}
		$control = '<select class="' . $this->class_form_control . '" title="' . $title . '" id="' . $id . '" name="' . $name . '" style="width:' . $width . 'px" size="' . $size . '" ' . $select_multi . ' ' . $add_html . '>';
		if ($title != '' && $multiple == 0)
		{
			$control.= '<option value="">- ' . $title . ' -</option>';
		}
		$count = count($array_multi);
		for ($i=0;$i<$count;$i++)
		{
			$selected = '';
			if ($multiple != 0)
			{
				if (strpos($currentValue, "[" . $array_multi[$i][$value_field] . "]") !== false)
				{
					$selected = ' selected="selected"';
				}
			}
			else
			{
				if ($currentValue == $array_multi[$i][$value_field])
				{
					$selected = ' selected="selected"';
				}
			}
			$control .= '<option title="' . $this->replaceQ($array_multi[$i][$name_field]) . '" value="' . $array_multi[$i][$value_field] . '"' . $selected . '>';
			for ($j=0;$j<$array_multi[$i]['level'];$j++)
			{
				$control .= '&nbsp;|--';
			}
			$control .= ' ' . $array_multi[$i][$name_field] . '</option>';
		}
		$control .= '</select>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create text control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Name")
	 * @param string $id ID của control						(Exp: "name_id")
	 * @param string $name Tên của control						(Exp: "name")
	 * @param string $value Giá trị của control				(Exp: "Mr. Giang")
	 * @param string $title Title của control					(Exp: "Full name")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của textbox			(Exp: "150" px)
	 * @param string $height Chiều cao của textbox				(Exp: "20" px)
	 * @param string $maxlength Số ký tự trong textbox			(Exp: "100")
	 * @param string $breakControl Chuỗi phân cách các textbox		(Exp: " - ")
	 * @param string $add_html Code HTML thêm vào					(Exp: "onFocus=\"this.value=''\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function text($titleControl, $id, $name, $value, $title = '', $require = '0', $width = '', $height = '', $maxlength = '', $breakControl = ' - ', $add_html = '', $add_text = '')
	{
		$arrID			= explode($this->ec, $id);
		$arrName		= explode($this->ec, $name);
		$arrValue		= explode($this->ec, $value);
		$arrTitle		= explode($this->ec, $title);
		$arrWidth		= explode($this->ec, $width);
		$arrHeight		= explode($this->ec, $height);
		$arrMaxlength	= explode($this->ec, $maxlength);
		$arrAdd_html	= explode($this->ec, $add_html);
		$control		= '';
		
		$count = count($arrID);
		for($i=0;$i<$count;$i++)
		{
			if ($breakControl == 'title')
			{
				$control .= $arrTitle[$i] . '&nbsp;';
				$control .= '<input class="' . $this->class_form_control . '" type="text" title="' . $arrTitle[$i] . '" id="' . $arrID[$i] . '" name="' . $arrName[$i] . '" value="' . $this->replaceQ($arrValue[$i]) . '" style="width:' . $arrWidth[$i] . 'px; height:' . $arrHeight[$i] . 'px" maxlength="' . $arrMaxlength[$i] . '" ' . $arrAdd_html[$i] . '/>';
				$control .= ' &nbsp; ';
			}
			else
			{
				$control .= '<input class="' . $this->class_form_control . '" type="text" title="' . $arrTitle[$i] . '" id="' . $arrID[$i] . '" name="' . $arrName[$i] . '" value="' . $this->replaceQ($arrValue[$i]) . '" style="width:' . $arrWidth[$i] . 'px; height:' . $arrHeight[$i] . 'px" maxlength="' . $arrMaxlength[$i] . '" ' . $arrAdd_html[$i] . '/>';
				if ($i < $count - 1)
				{
					$control .= $breakControl;
				}
			}
		}
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create password control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Password")
	 * @param string $id ID của control						(Exp: "password_id")
	 * @param string $name Tên của control						(Exp: "password")
	 * @param string $value Giá trị của control				(Exp: "Password")
	 * @param string $title Title của control					(Exp: "Enter password")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của passwordbox		(Exp: "150" px)
	 * @param string $height Chiều cao của passwordbox		(Exp: "20" px)
	 * @param string $maxlength Số ký tự trong passwordbox		(Exp: "100")
	 * @param string $add_html Code HTML thêm vào					(Exp: "onFocus=\"this.value=''\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @return string
	 */
	function password($titleControl, $id, $name, $value, $title = '', $require = '0', $width = '', $height = '', $maxlength = '', $add_html = '', $add_text = '')
	{
		$control = '<input class="' . $this->class_form_control . '" type="password" title="' . $title . '" id="' . $id . '" name="' . $name . '" value="' . $value . '" style="width:' . $width . 'px; height:' . $height . 'px" maxlength="' . $maxlength . '" ' . $add_html . '/>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create textarea control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Description")
	 * @param string $id ID của control						(Exp: "description_id")
	 * @param string $name Tên của control						(Exp: "description")
	 * @param string $value Giá trị của control				(Exp: "My company is GTK")
	 * @param string $title Title của control					(Exp: "Your description")
	 * @param string $require Dữ liệu bắt buộc nhập				(Exp: "1" -> require; "0" -> not require)
	 * @param string $width Chiều rộng của textarea			(Exp: "200" px)
	 * @param string $height Chiều cao của textarea			(Exp: "100" px)
	 * @param string $add_html Code HTML thêm vào					(Exp: "onFocus=\"this.value=''\"")
	 * @param string $add_text Chuỗi text thêm vào sau control(Exp: "(dd/mm/yyyy)")
	 * @param string $wysiwyg Có thêm WYSIWYG không				(Exp: bbcode("", "add", "id_description"))
	 * @return string
	 */
	function textarea($titleControl, $id, $name, $value, $title = '', $require = '0', $width = '', $height = '', $add_html = '', $add_text = '', $wysiwyg = '')
	{
		$control = $wysiwyg;
		$control .= '<textarea class="' . $this->class_form_control . '" title="' . $title . '" id="' . $id . '" name="' . $name . '" style="width:' . $width . 'px; height:' . $height . 'px" ' . $add_html . '>' . $this->replaceQ($value) . '</textarea>';
		$control .= $add_text;
		
		return $this->create_control($this->data_require($require, $titleControl, $id), $control);
	}
	
	/**
	 * Create wysiwyg control
	 *
	 * @param string $titleControl Tiêu đề của control				(Exp: "Description")
	 * @param string $id ID của control						(Exp: "description_id")
	 * @param string $value Giá trị của control				(Exp: "My company is mua88")
	 * @param string $basePath Đường dẫn đến control
	 * @param string $width Chiều rộng của textarea			(Exp: "200" px)
	 * @param string $height Chiều cao của textarea			(Exp: "100" px)
	 */
	function wysiwyg($titleControl, $id, $value, $basePath = '../wysiwyg_editor/', $width = '100%', $height = '450')
	{
		require_once($basePath . 'fckeditor.php');
		$oFCKeditor				= new FCKeditor($id);
		$value					= str_replace('\"', '"', $value);
		$value					= str_replace("\'", "'", $value);
		$value					= str_replace("\&quot;", "&quot;", $value);
		$value					= str_replace("\\\\", "\\", $value);
		$oFCKeditor->Value		= $value;
		$oFCKeditor->BasePath	= $basePath;
		$oFCKeditor->Width		= $width;
		$oFCKeditor->Height		= $height;
		echo '<div class="' . $this->class_form_name . '" style="text-align:left; padding:5px; width:' . $width . '">' . $titleControl . '</div>';
		$oFCKeditor->Create();
	}
	
	/**
	 * Create hidden control
	 *
	 * @param string $id ID của control						(Exp: "action_id")
	 * @param string $name Tên của control						(Exp: "action")
	 * @param string $value Giá trị của control				(Exp: "insert")
	 * @param string $add_html Code HTML thêm vào					(Exp: "onFocus=\"this.value=''\"")
	 * @return string
	 */
	function hidden($id, $name, $value, $add_html = '')
	{
		$control = '<input type="hidden" id="' . $id . '" name="' . $name . '" value="' . $this->replaceQ($value) . '" ' . $add_html . '/>';
		
		return $control;
	}
}